home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 7: Sunsite / Linux Cubed Series 7 - Sunsite Vol 1.iso / system / backup / dds2tar-.000 / dds2tar-2.4.12.tar / dds2tar-2.4.12 / dds_chkhdr.c < prev    next >
C/C++ Source or Header  |  1996-01-28  |  691b  |  40 lines

  1.  
  2. /*
  3.  * This file is part of dds2tar.
  4.  * Copyright by J"org Weule
  5.  */
  6.  
  7. #include <stdlib.h>
  8. #include <stdio.h>
  9. #include <sys/mtio.h>
  10. #include <unistd.h>
  11. #include <string.h>
  12. #include "dds2tar.h"
  13. #include "dds_tape.h"
  14.  
  15. int dds_is_tar_header_record(tar_record*const ptr){
  16.     int     i;
  17.     unsigned int     n = 0;
  18.     unsigned char    *p = (char*)ptr ;
  19.  
  20.     for (i = 0; i < 148; i++)
  21.         n += p[i];
  22.     for (i = 0; i < 8; i++)
  23.         n += ' ';
  24.     for (i = 156; i < 512; i++)
  25.         n += p[i];
  26.     sscanf(p + 148, "%8o", &i);
  27.     if ( n != ((int)' ') * 8 ){
  28.         if ( i == 0 ) {
  29.             sprintf(p+148 , "%o", n );
  30.         } else
  31.         if ( i != n ) return 0;
  32.         sscanf(ptr->hdr.size,"%o",&i);
  33.         i += 512 + 511 ;
  34.         i >>= 9 ;
  35.     } else i=1 ;
  36.     return i;
  37. }
  38.  
  39.  
  40.